前言
实现原理
- rpc_queue请求队列,存放请求的queue;
- reply_to响应队列,存放响应结果的queue;
- correlationId则是将请求Request和响应Response相互关联起来的标识;
RPCClient
public class RPCClient { |
RPCServer
public class RPCServer { |
总结
上述RPCClient和RPCServer案例中,存在一个问题,但是出现的可能性并不大;由于RPCServer是先返回响应队列结果,然后才向rpc_queue队列确认消息处理成功的,在这个过程中如果前一步执行成功了,但是后一步由于broker突然宕机导致没有进行消息确认ack处理,当broker重新启动,就会出现之前已经处理的消息重新处理。这需要RPCClient和RPCServer做好服务的幂等性。